package com.fengze.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fengze.common.annotation.Excel;
import com.fengze.common.core.domain.BaseEntity;

/**
 * 报销记录对象 fz_reimbursement_record
 * 
 * @author lug
 * @date 2024-02-28
 */
public class ReimbursementRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    @JsonIgnore
    private BigDecimal minMoney;

    @JsonIgnore
    private BigDecimal maxMoney;

    private String createUserName;

    private String auditUserName;

    private String paymentUserName;

    private BigDecimal money;

    /** 主键 */
    private Long id;

    /** 创建人id */
    @Excel(name = "创建人id")
    private Long userId;

    /** 部门id */
    @Excel(name = "部门id")
    private Long deptId;

    private String deptName;

    /** 凭证编号 */
    @Excel(name = "凭证编号")
    private String voucherNumber;

    /** 原始单据日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "原始单据日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date originalDocumentDate;

    /** 入账月份 */
    @JsonFormat(pattern = "yyyy-MM")
    @Excel(name = "入账月份", width = 30, dateFormat = "yyyy-MM")
    private Date entryMonth;

    /** 关联项目id */
    @Excel(name = "关联项目id")
    private Long projectId;

    /** 关联项目名称 */
    @Excel(name = "关联项目名称")
    private String projectName;

    /** 报销类型编码 */
    @Excel(name = "报销类型编码")
    private String typeCode;

    /** 报销类型名称 */
    @Excel(name = "报销类型名称")
    private String typeName;

    /** 支付方式编码 */
    @Excel(name = "支付方式编码")
    private String paymentMethodCode;

    /** 支付方式名称 */
    @Excel(name = "支付方式名称")
    private String paymentMethodName;

    /** 状态0未审核1已审核2已打款 */
    @Excel(name = "状态0未审核1已审核2已打款")
    private Integer status;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditTime;

    /** 审核人id */
    @Excel(name = "审核人id")
    private Long auditUserId;

    /** 打款时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "打款时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

    /** 打款人id */
    @Excel(name = "打款人id")
    private Long paymentUserId;

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    /**
     * 报销清单json字符串
     */
    private String reimbursementListStr;

    private String deleteFileInfoIdStr;

    private List<FileInfo> fileInfoList;

    public BigDecimal getMoney() {
        return money;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    private List<ReimbursementList> reimbursementLists;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setDeptId(Long deptId) 
    {
        this.deptId = deptId;
    }

    public Long getDeptId() 
    {
        return deptId;
    }
    public void setVoucherNumber(String voucherNumber) 
    {
        this.voucherNumber = voucherNumber;
    }

    public String getVoucherNumber() 
    {
        return voucherNumber;
    }
    public void setOriginalDocumentDate(Date originalDocumentDate)
    {
        this.originalDocumentDate = originalDocumentDate;
    }

    public Date getOriginalDocumentDate()
    {
        return originalDocumentDate;
    }
    public void setEntryMonth(Date entryMonth) 
    {
        this.entryMonth = entryMonth;
    }

    public Date getEntryMonth() 
    {
        return entryMonth;
    }
    public void setProjectId(Long projectId) 
    {
        this.projectId = projectId;
    }

    public Long getProjectId() 
    {
        return projectId;
    }
    public void setProjectName(String projectName) 
    {
        this.projectName = projectName;
    }

    public String getProjectName() 
    {
        return projectName;
    }
    public void setTypeCode(String typeCode) 
    {
        this.typeCode = typeCode;
    }

    public String getTypeCode() 
    {
        return typeCode;
    }
    public void setTypeName(String typeName) 
    {
        this.typeName = typeName;
    }

    public String getTypeName() 
    {
        return typeName;
    }
    public void setPaymentMethodCode(String paymentMethodCode) 
    {
        this.paymentMethodCode = paymentMethodCode;
    }

    public String getPaymentMethodCode() 
    {
        return paymentMethodCode;
    }
    public void setPaymentMethodName(String paymentMethodName) 
    {
        this.paymentMethodName = paymentMethodName;
    }

    public String getPaymentMethodName() 
    {
        return paymentMethodName;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setAuditTime(Date auditTime) 
    {
        this.auditTime = auditTime;
    }

    public Date getAuditTime() 
    {
        return auditTime;
    }
    public void setAuditUserId(Long auditUserId) 
    {
        this.auditUserId = auditUserId;
    }

    public Long getAuditUserId() 
    {
        return auditUserId;
    }
    public void setPaymentTime(Date paymentTime) 
    {
        this.paymentTime = paymentTime;
    }

    public Date getPaymentTime() 
    {
        return paymentTime;
    }
    public void setPaymentUserId(Long paymentUserId) 
    {
        this.paymentUserId = paymentUserId;
    }

    public Long getPaymentUserId() 
    {
        return paymentUserId;
    }

    public List<FileInfo> getFileInfoList() {
        return fileInfoList;
    }

    public void setFileInfoList(List<FileInfo> fileInfoList) {
        this.fileInfoList = fileInfoList;
    }

    public String getDeleteFileInfoIdStr() {
        return deleteFileInfoIdStr;
    }

    public void setDeleteFileInfoIdStr(String deleteFileInfoIdStr) {
        this.deleteFileInfoIdStr = deleteFileInfoIdStr;
    }

    public String getReimbursementListStr() {
        return reimbursementListStr;
    }

    public void setReimbursementListStr(String reimbursementListStr) {
        this.reimbursementListStr = reimbursementListStr;
    }

    public List<ReimbursementList> getReimbursementLists() {
        return reimbursementLists;
    }

    public void setReimbursementLists(List<ReimbursementList> reimbursementLists) {
        this.reimbursementLists = reimbursementLists;
    }

    public BigDecimal getMinMoney() {
        return minMoney;
    }

    public void setMinMoney(BigDecimal minMoney) {
        this.minMoney = minMoney;
    }

    public BigDecimal getMaxMoney() {
        return maxMoney;
    }

    public void setMaxMoney(BigDecimal maxMoney) {
        this.maxMoney = maxMoney;
    }

    public String getCreateUserName() {
        return createUserName;
    }

    public void setCreateUserName(String createUserName) {
        this.createUserName = createUserName;
    }

    public String getAuditUserName() {
        return auditUserName;
    }

    public void setAuditUserName(String auditUserName) {
        this.auditUserName = auditUserName;
    }

    public String getPaymentUserName() {
        return paymentUserName;
    }

    public void setPaymentUserName(String paymentUserName) {
        this.paymentUserName = paymentUserName;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("createTime", getCreateTime())
            .append("deptId", getDeptId())
            .append("voucherNumber", getVoucherNumber())
            .append("originalDocumentDate", getOriginalDocumentDate())
            .append("entryMonth", getEntryMonth())
            .append("projectId", getProjectId())
            .append("projectName", getProjectName())
            .append("typeCode", getTypeCode())
            .append("typeName", getTypeName())
            .append("paymentMethodCode", getPaymentMethodCode())
            .append("paymentMethodName", getPaymentMethodName())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("status", getStatus())
            .append("auditTime", getAuditTime())
            .append("auditUserId", getAuditUserId())
            .append("paymentTime", getPaymentTime())
            .append("paymentUserId", getPaymentUserId())
            .toString();
    }

}
